I've wondered for a while what it would be like to 'rice' a qr code. Like, conceptually it is possible because the layout of the pixels is somewhat customizable due to the different error minimizing patterns and the error correction blocks, but usually only the error correction is used for basic and conservative customization (yk you've seen it where a company will put a small logo in the center of the qr code) but you could be so much more creative! For personal QR codes, which are suprisingly common, if you put in a little bit of effort you can get some fun and more 'human' results (see attached image).
I just watched this video (see how to read QR codes by hand (youtube.com))
and I can imagine that it would be a lot if you aren't already familiar somewhat with the design of qr codes, but importantly topically
he made a website (noel-friedrich.de) which allows you to do a good 75% of the work to make something like what I have.
The core functionality of the website is for alorithmically generating a qr code which contains the given text, and you can specify how much of the error correction this is allowed to use. If you use up all of the error correction space for text you won't be able to include an image, but if you try to not use any the qr code will take ages to compute and end up being really big, unless you're encoding like a single letter or smth
In order to get the most use out of the tool, you probably want to enable developer mode. This will allow you to specify the error correction listed above as well as the size of the canvas you will get to work with before the qr code becomes unreadable.
A few options that I would enable right away are allow text over 5x5 alignment patterns unless your device needs them to scan the code, and if you are fine with it, allow text to be split into separate rectangles and uncheck only use text boxes at least as wide as they are tall. I think it looks kinda cool and trendy to have text randomly broken up, and it means the code can be smaller (can be scanned from further away) and takes less time to generate.
now once you have your text the way you want it you will need to enable show higlighting, Color Reed-Solomon blocks, and all of the blocks which are not at max permissible damage. Also, if you turn on marked changed modules, you can see any error correction that the text generation used. On the top of the screen, there are pencil, rectangle, and restore tools. These allow you to edit the qr code. Now each block that has been modified has been corrupted, and as far as I know, changing it more doesn't increase the damage to the code. Modify the QR code as you see fit. You can restore blocks that were changed automatically if you don't mind how it looks. It allows for more customization later. What I did was, using the rectangle tool, I drew a rectangle over the regions where I wanted to place images. By default it stops drawing when a block has reached its maximum error. When this happens, disable the block from the check-box list that has reached its max error. Now don't draw in areas that aren't colored. NOTE: if you max out a block, that means that if any new sector of the block is damaged (e.g. torn, covered) the code won't work. Try to leave some error correction left if possible!
Next, download the image and bring it into an image editor with layers. Erase all the regions where you want to place an image! NOTE: Check to make sure there aren't any blocks that were already pure black/white that you are accidentally covering with your image. Put your image on the layer below so that it isn't covering the code (you don't have to do this, but it's more risky to half-cover things, obviously) I filled the background with black to blend in with the rest of the QR code, but you don't have to do this! You can also change the black or white of the code to another color and it should still read.
Now go make the world more pretty, especially all these mundane little things!
Anyway, TTYL Rosebud!!1!11! (stupid reference)